# encoding: utf-8
'''
@author: Techzero
@email: techzero@163.com
@time: 2014-5-18 下午5:06:29
'''
import io
import getopt
import time
import subprocess
import sys

from datetime import datetime
from zey.common.tools import conn

MEDIA_PLAYER = 'C:\Program Files (x86)\\Netease\CloudMusic\cloudmusic.exe'
MEDIA_FILE = 'G:\CloudMusic\れをる,ギガP - No title.mp3'
CHROME = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe'
URL = 'https://detail.ju.taobao.com/home.htm?spm=608.7754846.J_qc9p8y33u3.2.3ddb08a9jbC8pb&id=10000052287633&item_id=548156215237'
NO_X11 = False


def get_current_button():
    '''获取当前按钮状态'''
    content = str(conn.connection().send_get(URL))  # 获取页面内容

    buf = io.StringIO(content)  # 将页面内容转换为输入流
    current_button = None
    for line in buf:
        line = line.strip(' \n\r')  # 去掉回车换行

        if line.find(r'<a href="#" class="extra  notice J_BuyButtonSub">开团提醒</a>') != -1:
            current_button = '开团提醒'
            break
        elif line.find(r'<div class="main-box chance ">') != -1:
            current_button = '还有机会'
            break
        elif line.find(r'<span class="out floatright">卖光了...</span>') != -1:
            current_button = '卖光了'
            break
        elif line.find(r'<span class="out floatright">已结束...</span>') != -1:
            current_button = '已结束'
            break
        elif line.find(r'<input type="submit" class="buyaction J_BuySubmit"  title="马上抢" value="马上抢"/>') != -1:
            current_button = '马上抢'
            break

    buf.close()
    return current_button


def notify():
    '''
    发出通知并用Chrome打开秒杀页面
    '''
    subprocess.Popen([MEDIA_PLAYER, MEDIA_FILE])
    if not NO_X11:
        subprocess.Popen([CHROME, URL])
        print('打开页面')


def monitor_button(interval, last):
    '''开始监视按钮'''
    elapse = 0
    while elapse < last:
        current_button = get_current_button()

        now = datetime.now()
        print('%d-%d-%d %d:%d:%d - 现在按钮是 %s' % (
        now.year, now.month, now.day, now.hour, now.minute, now.second, current_button))

        if current_button == '马上抢' or current_button == '还有机会':
            print('赶紧抢购！')
            notify()
            break
        elif current_button == '卖光了' or current_button == '已结束':
            print(
            '下次再试吧！')
            break
        else:
            print(
            '还没开始呢，再等等吧！')

        time.sleep(interval)
        elapse += interval


def usage():
    print(
    '''
usage: monitor_mac_price.py [options]

Options:
    -i interval: 30 seconds by default.
    -l last: 1800 seconds by default.
    -h: Print this usage.
    -X: Run under no X11.
'''
    )


if __name__ == '__main__':
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'i:l:hX')
    except getopt.GetoptError as err:
        print(str(err))
        sys.exit(1)

    interval = 0.1
    last = 1800

    for opt, val in opts:
        if opt == '-i':
            interval = int(val)
        elif opt == '-l':
            last = int(val)
        elif opt == '-X':
            NO_X11 = True
        elif opt == '-h':
            usage()
            sys.exit()

    monitor_button(interval, last)